'use strict';
var vk; // 全局vk实例
// 涉及的表名
const dbName = {
	//test: "vk-test", // 测试表
};

var db = uniCloud.database(); // 全局数据库引用
var _ = db.command; // 数据库操作符
var $ = _.aggregate; // 聚合查询操作符
/**
 * 权限注意：访问以下链接查看
 * 文档地址：https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#内置权限
 */
var cloudObject = {
	isCloudObject: true, // 标记为云对象模式
	/**
	 * 请求前处理，主要用于调用方法之前进行预处理，一般用于拦截器、统一的身份验证、参数校验、定义全局对象等。
	 * 文档地址：https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#before-预处理
	 */
	_before: async function() {
		vk = this.vk; // 将vk定义为全局对象
		// let { customUtil, uniID, config, pubFun } = this.getUtil(); // 获取工具包
	},
	/**
	 * 请求后处理，主要用于处理本次调用方法的返回结果或者抛出的错误
	 * 文档地址：https://vkdoc.fsq.pub/client/uniCloud/cloudfunctions/cloudObject.html#after-后处理
	 */
	_after: async function(options) {
		let { err, res } = options;
		if (err) {
			return; // 如果方法抛出错误，直接return;不处理
		}
		return res;
	},
	/**
	 * 模板函数 给刚刚注册的老师补充任务
	 * @url client/gsxy/xmtdk/pub/xmtdkapi.addWxryWzListOneppp 
	 */
	addWxryWzListOneppp: async function(data) {
		let { uid, filterResponse, originalParam } = this.getClientInfo(); // 获取客户端信息
		let res = { code: 0, msg: '' };
		// 业务逻辑开始-----------------------------------------------------------
		//console.log("请求参数", data);
		
		//1.找到当前任务
		let rw;
		  rw = await vk.baseDao.select({
		  dbName:"gsxy-xmtdk-rwfb", // 表名
		  getCount:false, // 是否需要同时查询满足条件的记录总数量，默认false
		  getMain:false,// 是否只返回rows数据，默认false
		  pageIndex:1, // 当前第几页
		  pageSize:3, // 每页条数
		  whereJson:{ // 条件
			
		  },
		  sortArr:[
			{ name:"_add_time", type:"desc" }
		  ],
		});
		res.rw = rw;

		// //2.找到当前用户
		let user = await vk.baseDao.findByWhereJson({
		  dbName:"gsxy-xmtkh-user",
		  whereJson:{
		    _id:data.ussid
		  }
		});
		res.user = user
		// //3.给与当前用户任务
		res.userinfo = []
		//let tempsj = Date.now()
		rw.rows.forEach(function (item,i) {
			item.rwid = item._id;
			Reflect.deleteProperty(item,'_id');
			item.userid = user._id;//用户id
			item.avatar = user.avatar;//用户id
			item.nickname = user.nickname;//用户id
			item.openid = user.openid;//用户id
			item.name = user.name;//用户id
			item.dlzt = '1';
			item.rwwczt = '0';//任务完成状态
			res.userinfo[i] = item;
		});
		//4.添加到考核表
		await vk.baseDao.adds({
		  dbName:"gsxy-xmtdk",// 表名
		  dataJson:res.userinfo
		});

		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 获取列表
	 * @url client/gsxy/xmtdk/pub/xmtdkapi.updatexmtdkone 前端调用的url参数地址
	 */
	updatexmtdkone: async function(data) {
		let res = { code: 0, msg: '' };
		let { uid } = this.getClientInfo(); // 获取客户端信息
		// 业务逻辑开始-----------------------------------------------------------
				let sj = Date.now()
			res.newInfo = await vk.baseDao.updateById({
			  dbName:"gsxy-xmtdk",
			  id:data.id,
			  dataJson:{
			    imgs:data.imgs,
				_add_time:sj,
				rwwczt:'1'
			  },
			  getUpdateData:true, // 去掉getUpdateData，则不会返回修改后的数据对象
			});
	
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 获取列表
	 * @url client/gsxy/xmtdk/pub/xmtdkapi.getxmtdkList 前端调用的url参数地址
	 */
	getxmtdkList: async function(data) {
		let res = { code: 0, msg: '' };
		let { uid } = this.getClientInfo(); // 获取客户端信息
		// 业务逻辑开始-----------------------------------------------------------
			res.list = await vk.baseDao.select({
			  dbName:"gsxy-xmtdk", // 表名
			  getCount:true, // 是否需要同时查询满足条件的记录总数量，默认false
			  getMain:true, // 是否只返回rows数据，默认false
			  pageIndex:1, // 当前第几页
			  pageSize:10, // 每页条数
			  whereJson:{ // 条件
			    userid:data.ussid  // 金额大于0desc asc
			  },
			  sortArr:[
			    { name:"_add_time", type:"desc" }
			  ],
			});
	
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
	/**
	 * 模板函数
	 * @url client/gsxy/xmtdk/pub/xmtdkapi.addxmtdkuser 前端调用的url参数地址
	 */
	addxmtdkuser: async function(data) {
		let res = { code: 0, msg: '' };
		let { uid } = this.getClientInfo(); // 获取客户端信息
		// 业务逻辑开始-----------------------------------------------------------
		res.info = await vk.baseDao.findByWhereJson({
		  dbName:"gsxy-xmtkh-user",
		  whereJson:{
		    openid:data.openid,
		  }
		});
		
		let tempinfo = res.info

		if(tempinfo){
			let updateId = tempinfo._id
			//Reflect.deleteProperty(tempinfo,'_id')
			res.up=await vk.baseDao.updateById({
			  dbName:"gsxy-xmtkh-user",
			  id:updateId,
			  dataJson:{
			    ...data
			  }
			});
		}else{
			data.dlzt = '1'
			data.dkzt = '1'
			data.jf = 0
			data.fjf = 0
			res.add =await vk.baseDao.add({
			  dbName:"gsxy-xmtkh-user",// 表名
			  dataJson:{ // 需要新增的数据 json格式
			    ...data
			  }
			});
		}

		// 业务逻辑结束-----------------------------------------------------------
		return res;
	},
};

module.exports = cloudObject;
